package com.weiqiao.api.service;

import com.weiqiao.api.domain.AccountDetailApiEntity;
import com.weiqiao.api.domain.ApiResponseEntity;
import com.weiqiao.api.domain.AppUserApiEntity;
import com.weiqiao.api.domain.ShopkeeperApiEntity;
import com.weiqiao.api.domain.vo.AppUserLoginVO;
import com.weiqiao.api.domain.vo.AppUserUpdateApiVO;
import com.weiqiao.api.domain.vo.AppUserVo;
import com.weiqiao.api.domain.vo.ReceiptApiVO;
import org.bson.conversions.Bson;

import java.util.List;

/**
 * @author ChenYF
 * @Description
 * @Date 2020/7/27 19:04
 */
public interface IAppUserApiService {

    /**
     * 新增用户
     *
     * @param user 用户信息
     * @return
     */
    AppUserApiEntity addUser(Integer company_id, AppUserApiEntity user);

    /**
     * 全量修改用户信息
     *
     * @param user 用户信息
     * @return
     */
    boolean updateUser(Integer company_id, AppUserApiEntity user);

    /**
     * 根据unionid查询单个用户
     *
     * @param unionid
     * @return
     */
    AppUserApiEntity getUser(Integer company_id, String unionid);

    /**
     * 根据条件查询单个用户
     * @param company_id
     * @param filter
     * @return
     */
    AppUserApiEntity getUser(Integer company_id, Bson filter);

    /**
     * 查询最大用户id
     *
     * @param company_id
     * @return
     */
    int getAppUserMaxId(Integer company_id);

    /**
     * 修改用户信息
     * @param vo
     * @return
     */
    ApiResponseEntity updateUser(AppUserUpdateApiVO vo);

    /**
     * 用户登录
     * @param vo
     * @return
     */
    ApiResponseEntity userLogin(AppUserLoginVO vo);

    /**
     * 获取积分流水、预估收入
     * @param vo
     * @return
     */
    List<AccountDetailApiEntity> findAccountDetailsByFilter(AppUserVo vo);

    /**
     * 获取提现限制金额
     * @param vo
     * @return
     */
    double getWithdrawalLimit(AppUserVo vo);

    /**
     * 获取商城配置信息
     * @param filter
     * @return
     */
    ShopkeeperApiEntity getShopEntity(Bson filter);

    /**
     * 提现
     * @param receiptVO
     */
    ApiResponseEntity userWithdrawal(ReceiptApiVO receiptVO);

    /**
     * 获取我的客户
     * 我的客户，即我的下级，且下过单的用户
     * @param vo 查询条件，用户id，公司id
     * @return
     */
    ApiResponseEntity getCustomer(AppUserVo vo);

    /**
     * 获取我的团队
     * @param vo 查询条件，用户id，公司id
     * @return
     */
    ApiResponseEntity getTeam(AppUserVo vo);
}
